#include <stdio.h>
#include <signal.h>
#include <unistd.h>

//1表示执行进程，0表示进程结束
static int running = 1;  

//声明俩函数，表示使用资源和释放资源
static void use_resource(void){
    printf("使用了一些资源\n");
}

static void free_resource(void){
    printf("释放了一些资源\n");
}

//通过信号判断当前执行的操作
static void sig_handler(int signo){
    if(signo == SIGINT){
        printf("接收到ctrl+c信号\n");
        running = 0;
    }
    else if(signo == SIGTERM){
        printf("接收到kill信号\n");
        running = 0;
    }
}

int main(int argc, char const *argv[])
{
    use_resource();
    //获取信号（目标信号，获取后调用函数）
    signal(SIGINT, sig_handler);
    signal(SIGTERM, sig_handler);

    while(running){
        printf("程序持续运行中\n");
        sleep(1);
    }
    //释放资源（当running=0,也就是说捕获到了信号）
    free_resource();

    return 0;
}

